\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{dim. avril 14 17:07:57 CEST 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={OpenSSL - x509},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Utilitaire de manipulation de certificat},
CreationDate={D:20130414170757},
ModDate={D:20130414170757},
Keywords={PKI;sécurité;chiffrement;certificats}
}}
\begin{document}
 
\begin{center}
{\Huge OpenSSL - x509 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Utilitaire de manipulation de certificat}
 
\vspace{10mm}
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -inform DER|PEM|NET]{Format du fichier x509 en entrée}
\item[\hspace{1mm} -outform DER|PEM|NET]{Format du fichier en sortie}
\item[\hspace{1mm} -in filename]{Fichier en entrée}
\item[\hspace{1mm} -out filename]{Fichier de sortie}
\item[\hspace{1mm} -md2|-md5|-sha1|-mdc2]{Message digest à utiliser}
\item[\hspace{1mm} -engine id]{x509 va tenter d’obtenir une référence fonctionnelle du moteur spécifié.}
\end{description}
 
\vspace{1cm}{\huge Options d'affichage }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -text]{Affiche le certificat au format texte.}
\item[\hspace{1mm} -certopt option]{Personnalise la sortie utilisée avec -text liste d’options à afficher. Peut être spécifié plusieurs fois}
\item[\hspace{1mm} -noout]{N’affiche pas la version encodée de la requête}
\item[\hspace{1mm} -pubkey]{Affiche le block SubjectPublicKeyInfo du certificat au format PEM}
\item[\hspace{1mm} -modulus]{Affiche la valeur du modulo de la clé publique contenue dans le certificat}
\item[\hspace{1mm} -serial]{Affiche le numéro de série du certificat}
\item[\hspace{1mm} -subject\_hash]{Affiche le hash du nom du certificat}
\item[\hspace{1mm} -issuer\_hash]{Affiche le hash de l’issuer du certificat}
\item[\hspace{1mm} -hash]{idem à -subject\_hash}
\item[\hspace{1mm} -subject\_hash\_old]{Affiche le hash du nom du certificat en utilisant l’ancien algorithme pré v1}
\item[\hspace{1mm} -issuer\_hash\_old]{Affiche le hash de l’issuer du certificat en utilisant l’ancien algorithme pré v1}
\item[\hspace{1mm} -subject]{Affiche le sujet}
\item[\hspace{1mm} -issuer]{Affiche le fournisseur}
\item[\hspace{1mm} -nameopt option]{Détermine comment le sujet et l’issuer sont affichés (voir options de nom)}
\item[\hspace{1mm} -email]{Affiche les adresses email}
\item[\hspace{1mm} -ocsp\_uri]{Affiche les adresses de répondeur OCSP}
\item[\hspace{1mm} -startdate]{Affiche la date de début de validité du certificat}
\item[\hspace{1mm} -enddate]{Affiche la date de fin de validité du certificat}
\item[\hspace{1mm} -dates]{Affiche la date de début et d’expiration du certificat}
\item[\hspace{1mm} -fingerprint]{Affiche le digest de la version encodé DER du certificat}
\item[\hspace{1mm} -C]{Affiche le certificat sous la forme d’un source C}
\end{description}
 
\vspace{1cm}{\huge Paramètres de confiance }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -trustout]{Sort un certifcat de confiance.}
\item[\hspace{1mm} -setalias arg]{Définis l’alias du certificat}
\item[\hspace{1mm} -alias]{Affiche l’alias du certificat, s’il existe}
\item[\hspace{1mm} -clrtrust]{Efface toutes les utilisations de confiance et permises du certificat}
\item[\hspace{1mm} -clrreject]{Efface toutes les utilisations rejetée ou interdites du certificat}
\item[\hspace{1mm} -addtrust arg]{Ajoute une utilisation de certifiaction de confiance. (clientAuth, serverAuth, emailProtection)}
\item[\hspace{1mm} -addreject arg]{Ajoute une utilisation interdite. Accèpte lesmême valeurs que -addtrust}
\item[\hspace{1mm} -purpose]{Effectue des tests sur les extensions du certificat et affiche le résultat (voir les extensions de certificat)}
\end{description}
 
\vspace{1cm}{\huge Options de signature }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -signkey filename]{Signe le fichier en entrée avec la clé privée spécifiée. Si l’entrée est une requête de certificat, génère un certificat auto-signé}
\item[\hspace{1mm} -clrext]{Supprime des extensions d’un certificat}
\item[\hspace{1mm} -keyform PEM|DER]{Format de la clé privée}
\item[\hspace{1mm} -days arg]{Spécifie le nombre de jours pour créer une validité pour le certificat}
\item[\hspace{1mm} -x509toreq]{Convertit un certificat en une requête}
\item[\hspace{1mm} -req]{L’entrée est une requete au lieu d’un certificat}
\item[\hspace{1mm} -set\_serial n]{Numéro de série à utiliser en décimal ou hexa}
\item[\hspace{1mm} -CA filename]{Certificat de la CA à utiliser pour signer le certificat}
\item[\hspace{1mm} -CAkey filename]{Clé privée de la CA}
\item[\hspace{1mm} -CAserial filename]{Définis le fichier de numéro de série à utiliser}
\item[\hspace{1mm} -CAcreateserial]{Créé le fichier de numéro de série s’il n’existe pas}
\item[\hspace{1mm} -extfile filename]{Fichier contenant les extensions à utiliser}
\item[\hspace{1mm} -extensions section]{Section où se trouvent les extensions à ajouter}
\end{description}
 
\vspace{1cm}{\huge Options de nommage }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} compat]{Utiliser l’ancien formats, équivalent à ne spécifier aucune option de nommage}
\item[\hspace{1mm} RFC2253]{Affiche les noms compatibles avec la rfc2253 equivalent à spécifier: \textbf{esc\_2253, esc\_ctrl, esc\_msb, utf8, dump\_nostr, dump\_unknown, dump\_der, sep\_comma\_plus, dn\_rev et sname}}
\item[\hspace{1mm} oneline]{Format oneline, plus lisible que rfc2253. equivalent à spécifier: \textbf{esc\_2253, esc\_ctrl, esc\_msb, utf8, dump\_nostr, dump\_der, use\_quote, sep\_comma\_plus\_space, space\_eq et sname}}
\item[\hspace{1mm} multiline]{Format multiligne. équivalent à spécifier: \textbf{esc\_ctrl, esc\_msb, sep\_multiline, space\_eq, lname et align}.}
\item[\hspace{1mm} esc\_2253]{Échappe les caractères spéciaux (,+"<> ;\#) requis par la rfc2253}
\item[\hspace{1mm} esc\_ctrl]{Échappe les caractères de contrôle d’échappement}
\item[\hspace{1mm} esc\_msb Echappe]{les caractères avec le MSB mis, c’est à dire les valeurs ASCII > 127}
\item[\hspace{1mm} use\_quote]{Échappe certains caractères en les plaçant entre "" au lieu de \textbackslash{}}
\item[\hspace{1mm} utf8]{Convertit toutes les chaînes en UTF8}
\item[\hspace{1mm} no\_type]{Ne tente pas d’interpréter les caractères multi-octets}
\item[\hspace{1mm} show\_type]{Affiche le type de chaîne caractère ASN1}
\item[\hspace{1mm} dump\_der]{Dump en encodé DER les champs qui doivent être dumpé en hexa}
\item[\hspace{1mm} dump\_nostr]{Dump les types de chaînes non caractères}
\item[\hspace{1mm} dump\_all]{Dump tous les champs}
\item[\hspace{1mm} dump\_unknown Dump]{les champs dont l’OID n’est pas reconnus par openssl}
\item[\hspace{1mm} sep\_comma\_plus]{}
\item[\hspace{1mm} sep\_comma\_plus\_space]{}
\item[\hspace{1mm} sep\_semi\_plus\_space]{}
\item[\hspace{1mm} sep\_multiline]{Déterminent les séparateurs de champs}
\item[\hspace{1mm} dn\_rev]{Renverse les champs d’un DN}
\item[\hspace{1mm} nofname]{}
\item[\hspace{1mm} sname]{}
\item[\hspace{1mm} lname]{}
\item[\hspace{1mm} oid]{Altère la manière dont le nom des champs est affiché}
\item[\hspace{1mm} align]{Aligne les valeurs de champs}
\item[\hspace{1mm} space\_eq]{Met des espace autour du caractère ’=’}
\end{description}
 
\vspace{1cm}{\huge Options de texte }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} compatible]{Utiliser l’ancien formats, équivalent à ne spécifier aucune option de sortie}
\item[\hspace{1mm} no\_header]{N’affiche pas les en-têtes}
\item[\hspace{1mm} no\_version]{N’affiche pas le numéro de version}
\item[\hspace{1mm} no\_serial]{N’affiche pas le numéro de série}
\item[\hspace{1mm} no\_signame]{N’affiche pas l’algorithme de signature utilisé}
\item[\hspace{1mm} no\_validity]{N’affiche pas la validité}
\item[\hspace{1mm} no\_subject]{N’affiche pas le sujet}
\item[\hspace{1mm} no\_issuer]{N’affiche pas l’issuer}
\item[\hspace{1mm} no\_pubkey]{N’affiche pas la clé publique}
\item[\hspace{1mm} no\_sigdump]{Ne dump par la signature du certificat}
\item[\hspace{1mm} no\_aux]{N’affiche pas les informations de trust du certificat}
\item[\hspace{1mm} no\_extensions]{N’affiche pas les extensions X509v3}
\item[\hspace{1mm} ext\_default]{Tente d’afficher les extensions de certificat non supportés}
\item[\hspace{1mm} ext\_error]{Affiche une erreur pour les extensions de certificat non supportés}
\item[\hspace{1mm} ext\_parse]{Parse en ASN1 les extensions non supportés}
\item[\hspace{1mm} ext\_dump]{Dumps en hexa les extensions non supportés}
\item[\hspace{1mm} ca\_default]{Valeur utilisé par l’utilitaire ca. equivalent à \textbf{o\_issuer, no\_pubkey, no\_header, no\_version, no\_sigdump et no\_signame}}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Afficher le contenu d’un certificat: \\
\hspace{1mm} \textbf{openssl x509 -in cert.pem -noout -text} \\
\hspace{1mm} Afficher le numérode série d’un certificat: \\
\hspace{1mm} \textbf{openssl x509 -in cert.pem -noout -serial} \\
\hspace{1mm} Affiche le sujet d’un certificat: \\
\hspace{1mm} \textbf{openssl x509 -in cert.pem -noout -subject} \\
\hspace{1mm} Afficher le sujet du certificat sous la forme RFC2253: \\
\hspace{1mm} \textbf{openssl x509 -in cert.pem -noout -subject -nameopt RFC2253} \\
\hspace{1mm} Afficher le sujet du certificat en une ligne et en utf8: \\
\hspace{1mm} \textbf{openssl x509 -in cert.pem -noout -subject -nameopt oneline,-esc\_msb} \\
\hspace{1mm} Affiche l’empreinte MD5 du certificat: \\
\hspace{1mm} \textbf{openssl x509 -in cert.pem -noout -fingerprint} \\
\hspace{1mm} Affiche l’empreinte SHA1 du certificat: \\
\hspace{1mm} \textbf{openssl x509 -sha1 -in cert.pem -noout -fingerprint} \\
\hspace{1mm} Convertir un certificat PEM en DER: \\
\hspace{1mm} \textbf{openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER} \\
\hspace{1mm} Convertit un certificat en requête: \\
\hspace{1mm} \textbf{openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem} \\
\hspace{1mm} Convertit une requête en un certificat auto-signé utilisant des extensions: \\
\hspace{1mm} \textbf{openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3\_ca -signkey key.pem -out cacert.pem} \\
\hspace{1mm} Signer une requête en utilisant le certificat d’un CA et en ajoutant des extensions utilisateur: \\
\hspace{1mm} \textbf{openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3\_usr -CA cacert.pem -CAkey key.pem -CAcreateserial} \\
\hspace{1mm} Définis un certificat à truster pour un client SSL et changer son alias en "Steve’s Class 1 CA": \\
\hspace{1mm} \textbf{openssl x509 -in cert.pem -addtrust clientAuth -setalias "Steve’s Class 1 CA" -out trust.pem} \\
 
\vspace{1cm}{\huge Notes }
 
\
 
\hspace{1mm} Le format PEM utilise les élements suivants:
 
{\ttfamily
-----BEGIN CERTIFICATE-----\\ -----END CERTIFICATE-----\\
}
\vspace{8mm}
 
\hspace{1mm} ou:
 
{\ttfamily
-----BEGIN X509 CERTIFICATE-----\\ -----END X509 CERTIFICATE-----\\
}
\vspace{8mm}
 
\hspace{1mm} Les certificats trustés auronts les lignes:
 
{\ttfamily
-----BEGIN TRUSTED CERTIFICATE-----\\ -----END TRUSTED CERTIFICATE-----\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Extensions de certificat }
 
\
 
\hspace{1mm}  l’option \textbf{-purpose} vérifie les extensions de certificat et détermine l’utilisation du certificat.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} basicContraints]{(Bool)Cette extension est utilisé pour déterminer si le certificat peut être utilisé comme CA.}
\item[\hspace{1mm} keyUsage]{Cette extension contient des restrictions sur l’utilisation du certificat. Un certificat CA doit avoir le but keyCertSign mis si cette extension est présente.}
\end{description}
 
\vspace{1cm}{\huge Description de chaque tests }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} SSL Client]{L’extension d’utilisation de clé doit être absent ou inclure l’OID web client authentication. keyUsage doit être absent ou avoir le bit digitalSignature mis.}
\item[\hspace{1mm} SSL Client]{CA L’extension d’utilisation de clé doit être absent ou inclure l’OID web client authentication.}
\item[\hspace{1mm} SSL Server]{L’extension d’utilisation de clé doit être absent ou inclure l’OID web server authentication et/ou un OID SGC. keyUsage doit être absent ou avoir le bit digitalSignature et/ou keyEncipherment mis.}
\item[\hspace{1mm} SSL Server CA]{L’extension d’utilisation de clé doit être absent ou inclure l’OID web server authentication et/ou un OID SGC.}
\item[\hspace{1mm} Netscape SSL Server]{Pour que les clients Netscape se connectent à un serveur SSL il doitavoir le bit keyEncipherment mis si keyUsage est présent}
\item[\hspace{1mm} Common S/MIME Client]{Tests L’extension d’utilisation de clé doit être absent ou inclure l’OID email protection.}
\item[\hspace{1mm} S/MIME Signing]{idem, et test le bit digitalSignature sur keyUsage est présent}
\item[\hspace{1mm} S/MIME Encryption]{idem et test le bit keyEncipherment sur keyUsage est présent}
\item[\hspace{1mm} S/MIME CA]{L’extension d’utilisation de clé doit être absent ou inclure l’OID email protection.}
\item[\hspace{1mm} CRL Signing]{KeyUsage doit être absent ou avoir le bit CRL Signing mis.}
\item[\hspace{1mm} CRL Signing CA]{Test normal CA, excepté que l’extention basicContraints ne doit pas être présent}
\end{description}
\end{flushleft}
\end{document}
